Much of the utility of a spreadsheet application lies in the ability of a user to capture data and algorithmic operations in an organized structure, such as a worksheet, without the need for professional programming capabilities. A non-programmer user can specify complex data relationships, including summing operations, amortization operations, and so on, without learning a programming language. The user, for example, may enter a formula into a cell of the worksheet (e.g., “=A1+B1”), and the result of the formula is returned and displayed in the cell.
One of the problems with existing user-defined spreadsheet formula techniques, however, is that formulae are not encapsulated or labeled to support reuse or parameter passing. As such, when a task becomes more complex, professional programming languages are employed, instead of the less complicated spreadsheet-oriented formula interface. Furthermore, when a correction or customization is required to a set of formulae (e.g., formulae instantiated in multiple cells or multiple spreadsheets), the changes must be made to each formula instance, amplifying the chance of error during the edits. Reusable application-provided functions (e.g., SUM( )) and third-party pluggable functions exist in spreadsheets, but these functions are built-in (or plugged in), programmed in an advanced programming language, and not customizable by a user.